package mx.gob.imss.reiman.clientes.model;

import java.util.ArrayList;
import java.util.List;

//TODO: 
public class LabCancel {
	private String NUM_FOLIO_ORDEN = "";
	private String CVE_IDEE = "";
	private String FECHA_HORA_ATENCION = "";
	private String CVE_PRESUPUESTAL = "";
	private String APELLIDOP_CANCELA = "";
	private String APELLIDOM_CANCELA = "";
	private String NOMBRE_CANCELA = "";
	private String MAT_CANCELA = "";
	private String MOTIVO_CANCELACION = "";
	private String FECHA_HORA_CANCEL = "";
	private String SERV_CONTRATADO = "";
	private String ID_APLICACION = "";
	private String SIS_SOLICITANTE = "";
	private String RFC_PROVEEDOR = "";
	private String TIPO_MENSAJE = "";
	private String NUM_CONTRATO = "";
	private List<String> errores = new ArrayList<String>();

	public String getNUM_FOLIO_ORDEN() {
		return NUM_FOLIO_ORDEN;
	}

	public void setNUM_FOLIO_ORDEN(String nUMFOLIOORDEN) {
		NUM_FOLIO_ORDEN = nUMFOLIOORDEN;
	}

	public String getCVE_IDEE() {
		return CVE_IDEE;
	}

	public void setCVE_IDEE(String cVEIDEE) {
		CVE_IDEE = cVEIDEE;
	}

	public String getFECHA_HORA_ATENCION() {
		return FECHA_HORA_ATENCION;
	}

	public void setFECHA_HORA_ATENCION(String fECHAHORAATENCION) {
		FECHA_HORA_ATENCION = fECHAHORAATENCION;
	}

	public String getCVE_PRESUPUESTAL() {
		return CVE_PRESUPUESTAL;
	}

	public void setCVE_PRESUPUESTAL(String cVEPRESUPUESTAL) {
		CVE_PRESUPUESTAL = cVEPRESUPUESTAL;
	}

	public String getAPELLIDOP_CANCELA() {
		return APELLIDOP_CANCELA;
	}

	public void setAPELLIDOP_CANCELA(String aPELLIDOPCANCELA) {
		APELLIDOP_CANCELA = aPELLIDOPCANCELA;
	}

	public String getAPELLIDOM_CANCELA() {
		return APELLIDOM_CANCELA;
	}

	public void setAPELLIDOM_CANCELA(String aPELLIDOMCANCELA) {
		APELLIDOM_CANCELA = aPELLIDOMCANCELA;
	}

	public String getNOMBRE_CANCELA() {
		return NOMBRE_CANCELA;
	}

	public void setNOMBRE_CANCELA(String nOMBRECANCELA) {
		NOMBRE_CANCELA = nOMBRECANCELA;
	}

	public String getMAT_CANCELA() {
		return MAT_CANCELA;
	}

	public void setMAT_CANCELA(String mATCANCELA) {
		MAT_CANCELA = mATCANCELA;
	}

	public String getMOTIVO_CANCELACION() {
		return MOTIVO_CANCELACION;
	}

	public void setMOTIVO_CANCELACION(String mOTIVOCANCELACION) {
		MOTIVO_CANCELACION = mOTIVOCANCELACION;
	}

	public String getFECHA_HORA_CANCEL() {
		return FECHA_HORA_CANCEL;
	}

	public void setFECHA_HORA_CANCEL(String fECHAHORACANCEL) {
		FECHA_HORA_CANCEL = fECHAHORACANCEL;
	}

	public String getSERV_CONTRATADO() {
		return SERV_CONTRATADO;
	}

	public void setSERV_CONTRATADO(String sERVCONTRATADO) {
		SERV_CONTRATADO = sERVCONTRATADO;
	}

	public String getID_APLICACION() {
		return ID_APLICACION;
	}

	public void setID_APLICACION(String iDAPLICACION) {
		ID_APLICACION = iDAPLICACION;
	}

	public String getSIS_SOLICITANTE() {
		return SIS_SOLICITANTE;
	}

	public void setSIS_SOLICITANTE(String sISSOLICITANTE) {
		SIS_SOLICITANTE = sISSOLICITANTE;
	}

	public String getRFC_PROVEEDOR() {
		return RFC_PROVEEDOR;
	}

	public void setRFC_PROVEEDOR(String rFCPROVEEDOR) {
		RFC_PROVEEDOR = rFCPROVEEDOR;
	}

	public String getTIPO_MENSAJE() {
		return TIPO_MENSAJE;
	}

	public void setTIPO_MENSAJE(String tIPOMENSAJE) {
		TIPO_MENSAJE = tIPOMENSAJE;
	}

	public String getNUM_CONTRATO() {
		return NUM_CONTRATO;
	}

	public void setNUM_CONTRATO(String nUMCONTRATO) {
		NUM_CONTRATO = nUMCONTRATO;
	}

	public List<String> getErrores() {
		return errores;
	}

	public void setErrores(List<String> errores) {
		this.errores = errores;
	}

	public void addError(String error) {
		errores.add(error);
	}

	public String getXML() {
		StringBuffer xml = new StringBuffer();
		xml.append("<labCancel xmlns=\"http://www.openuri.org/\"> \n ");
		xml.append("	<GovTalkMessage xmlns=\"urn:hl7-org:v3\"> \n");
		xml.append("	<EnvelopeVersion>2.0</EnvelopeVersion> \n");
		xml.append("  <Header> \n");
		xml.append("   <MessageDetails> \n");
		xml.append("    <Class>POLB_RM004000</Class> \n");
		xml.append("    <Qualifier>HL7Message</Qualifier> \n");
		xml.append("  	<Function>submit</Function> \n");
		xml.append("	<TransactionID/>");
		xml.append("	<CorrelationID></CorrelationID>");
		xml.append("	<GatewayTimestamp>01:01:01 2011/01/01</GatewayTimestamp>");
		xml.append("   </MessageDetails>");
		xml.append("   <SenderDetails>");
		xml.append("		<SenderIP>11.254.16.122</SenderIP>");
		xml.append("		<Authentication>");
		xml.append("			<Method>clear</Method>");
		xml.append("			<Value/>");
		xml.append("		</Authentication>");
		xml.append("   </SenderDetails>");
		xml.append("   <ReceiverDetails>");
		xml.append("	<SenderIP>11.254.16.122</SenderIP>");
		xml.append("	<Authentication>");
		xml.append("		<Method>clear</Method>");
		xml.append("		<Value/>");
		xml.append("	</Authentication>");
		xml.append("   </ReceiverDetails>");
		xml.append("  </Header>");
		xml.append("	<GovTalkDetails> \n");
		xml.append("		<TargetDetails> \n");
		xml.append("			<Organization>IMSS</Organization> \n");
		xml.append("		</TargetDetails> \n");
		xml.append("	</GovTalkDetails> \n");
		xml.append("	<Body> \n");
		xml.append("<Act xmlns=\"urn:hl7-org:v3\" xmlns:xsi='http://www.w3.org/2002/XMLSchema-instance' xsi:schemaLocation='urn:hl7-org:v3 POLB_HD004000.xsd'>");
		xml.append("	<id root='2.16.840.1.113883.19.3.2409' extension='"
				+ this.NUM_FOLIO_ORDEN + "' displayable='true'/>");
		xml.append("	<effectiveTime value='" + this.FECHA_HORA_ATENCION + "'/>");
		xml.append("	<reasonCode code='"
				+ this.MOTIVO_CANCELACION
				+ "' codeSystem='2.16.840.1.113883.5.8' codeSystemName='ActReason' displayName='Display name'/>");
		xml.append("	<recordTarget>");
		xml.append("		<patient>");
		xml.append("			<id root='2.16.840.1.113883.19.3.2409' extension='"
				+ this.CVE_IDEE + "' displayable='true'/>");
		xml.append("		</patient>");
		xml.append("	</recordTarget>");
		xml.append("	<author>");
		xml.append("		<time value='" + this.FECHA_HORA_CANCEL + "'/>");
		xml.append("		<assignedEntity>");
		xml.append("			<confidentialityCode code='"
				+ this.MAT_CANCELA
				+ "' codeSystem='2.16.840.1.113883.5.25' codeSystemName='Confidentiality' displayName='Display name'/>");
		xml.append("			<assignedPerson>");
		xml.append("				<name use='" + this.NOMBRE_CANCELA + "'>");
		if (this.APELLIDOM_CANCELA != null
				&& !"".equals(this.APELLIDOM_CANCELA)) {
			xml.append("				<given>" + this.APELLIDOM_CANCELA + "</given>");
		}
		xml.append("					<family>" + this.APELLIDOP_CANCELA + "</family>");
		xml.append("				</name>");
		xml.append("			</assignedPerson>");
		xml.append("		</assignedEntity>");
		xml.append("	</author>");
		xml.append("	<dataEntryLocation>");
		xml.append("		<locatedEntity>");
		xml.append("			<locatedPublicInstitution>");
		xml.append("				<code code='"
				+ this.CVE_PRESUPUESTAL
				+ "' codeSystem='2.16.840.1.113883.19.1.16040' codeSystemName='EntityCode'/>");
		xml.append("			</locatedPublicInstitution>");
		xml.append("		</locatedEntity>");
		xml.append("	</dataEntryLocation>");
		xml.append("	<subjectOf>");
		xml.append("		<controlActEvent>");
		xml.append("			<id root='2.16.840.1.113883.19.3.2409' extension='"
				+ this.TIPO_MENSAJE + "' displayable='true'/>");
		xml.append("			<code code='"
				+ this.SIS_SOLICITANTE
				+ "' codeSystem='2.16.840.1.113883.5.4' codeSystemName='ActCode'/>");
		xml.append("			<priorityCode code='"
				+ this.SERV_CONTRATADO
				+ "' codeSystem='2.16.840.1.113883.5.7' codeSystemName='ActPriority' displayName='Display name'/>");
		xml.append("			<confidentialityCode code='"
				+ this.ID_APLICACION
				+ "' codeSystem='2.16.840.1.113883.5.25' codeSystemName='Confidentiality' displayName='Display name'/>");
		xml.append("			<uncertaintyCode code='"
				+ this.NUM_CONTRATO
				+ "' codeSystem='2.16.840.1.113883.5.25' codeSystemName='Confidentiality' displayName='Display name'/>");
		xml.append("			<reasonCode code='"
				+ this.RFC_PROVEEDOR
				+ "' codeSystem='2.16.840.1.113883.5.8' codeSystemName='ActReason' displayName='Display name'/>");
		xml.append("		</controlActEvent>");
		xml.append("	</subjectOf>");
		xml.append("</Act>");
		xml.append("	</Body> \n");
		xml.append("</GovTalkMessage>");
		xml.append("</labCancel>");
		return xml.toString();
	}
}
